from app.app import create_app
from app.libs.error import APIException
from werkzeug.exceptions import HTTPException
from app.libs.error_code import ServerError

#调用create_app方法(需导入app.app模块)创建应用层app对象
app = create_app()

#flask 1.0之后才有errorhandler用于对全局异常处理
#即flask 1.0版本才能使用@app.errorhandler(Exception)
@app.errorhandler(Exception)
def my_frame_error(e):
    # APIException
    # HTTPException
    # Exception
    if isinstance(e, APIException):
        return e
    
    if isinstance(e, HTTPException):
        code = e.code
        msg = e.description
        error_code = 1007
        return APIException(msg, code, error_code)
    else:
        if not app.config['DEBUG']: #未开启调试模式时
            return ServerError()
        else:
            raise e    

#判断当前文件(模块)是被执行还是被导入
#如果是被执行，则__name__ = '__main__', 程序继续往下执行
if __name__ == '__main__':
    #启动应用服务器, 使用默认参数, 开启调试模式
    app.run(debug=app.config['DEBUG'])
